<?php
/**
 * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 * @link      https://cakephp.org CakePHP(tm) Project
 * @since     0.2.9
 * @license   https://opensource.org/licenses/mit-license.php MIT License
 */
namespace App\Controller;

use Cake\Controller\Controller;
use Cake\Event\Event;

/**
 * Application Controller
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @link https://book.cakephp.org/3.0/en/controllers.html#the-app-controller
 */
class AppController extends Controller
{

    /**
     * Initialization hook method.
     *
     * Use this method to add common initialization code like loading components.
     *
     * e.g. `$this->loadComponent('Security');`
     *
     * @return void
     */
    public function initialize()
    {
        parent::initialize();

        $this->loadComponent('G');
        $this->loadComponent('Jwt',[
            'allowedActions' => [
                'AutoApis'=>['generate'],
                'Admins'=>['login'],
                'BasisDatas'=>['getSysDict'],
                'Lives'=>['record'],
                'Events'=>['getExcel'],
                'Uploaders'=>['img','mpcreate'],
                'Users'=>['getUserPoints'],
                ],
            'allowedRefresh' => ['Users' => 'jwtrefresh']
        ]);
        $this->loadComponent('AdminCheck',[
            'checkedActions' => [
                'Stores'=>['add'],
            ]
        ]);
        $this->loadComponent('RequestHandler', [
            'enableBeforeRedirect' => false,
        ]);
        $this->loadComponent('Flash');

        /*
         * Enable the following component for recommended CakePHP security settings.
         * see https://book.cakephp.org/3.0/en/controllers/components/security.html
         */
        //$this->loadComponent('Security');

    }

    public function beforeFilter(Event $event) {
        if ($this->request->is('options')){
            exit;
        }
        $this->Jwt->check();
//        $this->AdminCheck->check();
        $this->viewBuilder()->setLayout('ajax');
        $this->viewBuilder()->setTemplate('/Element/ajax');
    }
}
